package entity

import (
	"gorm.io/datatypes"
	"gorm.io/gorm"
	"time"
)

type SysUsers struct {
	Id             uint32         `gorm:"primaryKey" json:"id"`                                          // 用户ID
	Name           string         `gorm:"name" json:"name" binding:"required"`                           // 用户名称
	Avatar         string         `gorm:"avatar" json:"avatar"`                                          // 用户头像地址
	Email          string         `gorm:"email,unique" json:"email" binding:"required"`                  // 登陆邮箱
	Password       string         `gorm:"password" json:"password"`                                      // 密码
	PasswordLevel  uint32         `gorm:"password_level" json:"password_level"`                          // 密码
	RememberToken  string         `gorm:"remember_token" json:"remember_token"`                          //
	RoleIds        datatypes.JSON `gorm:"role_ids,default:'[]'" json:"role_ids" binding:"dive,required"` // 用户关联角色ID集
	Tags           datatypes.JSON `gorm:"tags,default:'[]'" json:"tags" binding:"dive,required"`         //关联用户标签
	Country        string         `gorm:"country" json:"country"`                                        //所属国家标识
	CountryName    string         `gorm:"country_name" json:"country_name"`                              //所属国家
	Geographic     datatypes.JSON `gorm:"geographic,default:'[]'" json:"geographic"`                     // 省市区
	GeographicName datatypes.JSON `gorm:"geographic_name,default:'[]'" json:"geographic_name"`           // 省市区名称
	Address        string         `gorm:"address" json:"address"`                                        //详细地址
	Phone          string         `gorm:"phone" json:"phone"`                                            //手机号
	Profile        string         `gorm:"profile" json:"profile"`                                        //个人简介
	CreatedAt      time.Time      `gorm:"created_at" json:"created_at"`
	UpdatedAt      time.Time      `gorm:"updated_at" json:"updated_at"`
	DeletedAt      gorm.DeletedAt `gorm:"deleted_at" json:"deleted_at"`
}

func (e *SysUsers) TableName() string {
	return "sys_users"
}
